package org.db.ui;

import java.util.List;

import javax.swing.JTable;

import org.db.Manager;
import org.db.dao.LageskizzenGVPDAO;

public class LageskizzenGVPTable extends JTable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3752654812112837207L;

	private ColorTableCellRenderer renderer;

	public LageskizzenGVPTable() {
		this(true);
	}

	public LageskizzenGVPTable(boolean autofill) {
		setModel(new LageskizzenGVPTableModel());
		registerCellRenderer();
		// Tabelle initial mit bisherigen LageskizzenGVPs füllen
		if (autofill) {
			((LageskizzenGVPTableModel) getModel()).addLageskizzenGVPs(Manager
					.getInstance().getLageskizzenGVPs());
		}

	}

	public void addLageskizzenGVP(LageskizzenGVPDAO dao) {
		((LageskizzenGVPTableModel) getModel()).addLageskizzenGVP(dao);
	}

	public void addLageskizzenGVPs(List<LageskizzenGVPDAO> daos) {
		((LageskizzenGVPTableModel) getModel()).addLageskizzenGVPs(daos);
	}

	public void setLageskizzenGVPs(List<LageskizzenGVPDAO> daos) {
		((LageskizzenGVPTableModel) getModel()).addLageskizzenGVPs(daos);
	}

	public void replaceGVPElement(LageskizzenGVPDAO oldDao,
			LageskizzenGVPDAO newDao) {
		((LageskizzenGVPTableModel) getModel()).replaceGVPElement(oldDao,
				newDao);
	}

	public LageskizzenGVPDAO getElementAtRow(int row) {
		return ((LageskizzenGVPTableModel) getModel()).getElementAtRow(row);
	}

	public List<LageskizzenGVPDAO> getGVPElemente() {
		return ((LageskizzenGVPTableModel) getModel()).getGVPElemente();
	}

	public void refresh() {
		((LageskizzenGVPTableModel) getModel()).fireTableDataChanged();
	}

	public void removeGVPElement(LageskizzenGVPDAO dao) {
		((LageskizzenGVPTableModel) getModel()).removeGVPElement(dao);
	}

	public LageskizzenGVPDAO removeGVPElement(int rowIndex) {
		return ((LageskizzenGVPTableModel) getModel())
				.removeGVPElement(rowIndex);
	}

	public void highlightCell(int row, int column) {
		renderer.highlightCell(row, column);
		refresh();
	}

	public void highlightCell1(int row, int column) {
		renderer.highlightCell1(row, column);
		refresh();
	}

	/**
	 * Highlighting der Zellen aufheben.
	 */
	public void resetHighlighting() {
		renderer.reset();
		refresh();
	}

	public boolean isEmpty() {
		return ((LageskizzenGVPTableModel) getModel()).isEmpty();
	}

	public void clear() {
		((LageskizzenGVPTableModel) getModel()).clear();
	}

	private void registerCellRenderer() {
		renderer = new ColorTableCellRenderer();
		for (int i = 0; i < getColumnModel().getColumnCount(); i++) {
			getColumnModel().getColumn(i).setCellRenderer(renderer);
		}
	}

}
